package com.zy.cat.service;

import java.util.List;
import java.util.Map;

import com.zy.cat.common.utils.ExtendMethod;
import com.zy.cat.entity.game.CVSDrawCountHistory;
import com.zy.cat.entity.game.CVSDrawHistory;
import com.zy.cat.entity.game.CVSEBottleCountHistory;
import com.zy.cat.entity.game.CardDrawHistory;
import com.zy.cat.entity.game.CardPokerDrawHistory;
import com.zy.cat.entity.game.FruitPrinceInfo;
import com.zy.cat.entity.game.TrunDrawExtraRewardInfo;
import com.zy.cat.entity.game.TrunDrawHistory;
import com.zy.cat.entity.game.resp.BoxInfoResp;
import com.zy.cat.entity.game.resp.CVSDrawHistoryResp;
import com.zy.cat.entity.game.resp.CVSInfoResp;
import com.zy.cat.entity.game.resp.CVSPrizeInfoResp;
import com.zy.cat.entity.game.resp.CardDrawBannerResp;
import com.zy.cat.entity.game.resp.CardDrawHistoryResp;
import com.zy.cat.entity.game.resp.CardInfoResp;
import com.zy.cat.entity.game.resp.CardPokerDrawHistoryResp;
import com.zy.cat.entity.game.resp.FruitCoinCountHistoryResp;
import com.zy.cat.entity.game.resp.FruitDrawHistoryResp;
import com.zy.cat.entity.game.resp.FruitInfoResp;
import com.zy.cat.entity.game.resp.FruitRetryCountHistoryResp;
import com.zy.cat.entity.game.resp.ScrollBarInfoResp;
import com.zy.cat.entity.game.resp.TrunDrawExtraRewardResp;
import com.zy.cat.entity.game.resp.TrunDrawHistoryResp;
import com.zy.cat.entity.game.resp.TrunDrawResp;
import com.zy.cat.entity.resp.Pages;
import com.zy.cat.entity.resp.ResultPage;

public interface CatGameService {

	/**
	 * 
	 * @info 获取神奇便利店的进度信息
	 * @apiNote 已完成
	 * @author Link
	 * @date 2019-11-15 16:38
	 * @param rtype
	 * @param pid
	 * @return
	 */
	CVSInfoResp getCVSInfo(int rtype, String pid);

	/**
	 * 
	 * @info 获取神奇便利店抽奖
	 * @author Link
	 * @apiNote 已完成
	 * @date 2019-11-15 16:50
	 * @param rtype
	 * @param pid
	 * @return
	 */
	List<CVSDrawHistoryResp> getCVSDraw(int rtype, String pid);

	/**
	 * 
	 * @info 神奇便利店广告兑换能量瓶
	 * @author Link
	 * @apiNote 已完成
	 * @date 2019-11-15 19:07
	 * @param rtype
	 * @param pid
	 * @return
	 */
	Map<String,Object> getCVSEbottle(int rtype, String pid);
	
	/**
	 * 
	 * @info 获取神奇便利店今日能量瓶数量
	 * @author Link
	 * @apiNote 已完成
	 * @date 2019-11-15 19:08
	 * @param pid
	 * @return
	 */
	CVSEBottleCountHistory getTodayEbottlesCount(String pid);
	
	/**
	 * 
	 * @info 获取神奇便利店今日抽奖次数
	 * @author Link
	 * @apiNote 已完成
	 * @date 2019-11-15 19:08
	 * @param pid
	 * @return
	 */
	CVSDrawCountHistory getTodayDrawsCount(String pid);

	/**
	 * 
	 * @info 获取神奇便利店能量瓶兑换抽奖次数
	 * @author Link
	 * @apiNote 已完成
	 * @date 2019-11-15 19:19
	 * @param rtype
	 * @param pid
	 * @return
	 */
	boolean getEbottle2Draws(int rtype, String pid);

	/**
	 * 
	 * @info 抽奖历史纪录
	 * @author Link
	 * @apiNote 已完成
	 * @date 2019-11-16 17:47
	 * @param rtype
	 * @param pid
	 * @param pages
	 * @return
	 */
	ResultPage<CVSDrawHistoryResp> getCVSDrawList(int rtype, String pid, Pages pages);

	/**
	 * 
	 * @info 观看广告，奖励翻倍
	 * @author Link
	 * @apiNote 已完成
	 * @date 2019-11-18 09:05
	 * @param draw
	 * @return
	 */
	CVSDrawHistoryResp getCVSDrawDouble(CVSDrawHistory draw);
	
	/**
	 * 
	 * @info 领取额神奇便利店额外奖励
	 * @author Link
	 * @apiNote 已完成
	 * @date 2019-11-19 10:39
	 * @param rtype
	 * @param history
	 * @return
	 */
	CVSDrawHistoryResp getCVSEPkgs(Integer rtype, CVSDrawHistory history);

	/**
	 * 
	 * @info 大转盘初始化，获取剩余抽奖机会，第一次进入，获取每日100次抽奖机会
	 * @author xiake
	 * @apiNote 已完成
	 * @date 2019-11-18 10:33
	 * @param rtype
	 * @param pid
	 * @return
	 */
	TrunDrawResp getTurnInfo(int rtype, String pid);

	/**
	 * 
	 * @info 大转盘进行抽奖,包含额外奖励
	 * @author xiake
	 * @apiNote 已完成
	 * @date 2019-11-18 10:35
	 * @param rtype
	 * @param pid
	 * @return
	 */
	TrunDrawResp getTurnDraw(int rtype, String pid);

	/**
	 * 
	 * @info 大转盘进行抽奖,奖励翻倍(x3)
	 * @author xiake
	 * @apiNote 已完成
	 * @date 2019-11-18 10:40
	 * @param draw
	 * @return
	 */
	TrunDrawHistoryResp getTurnDrawDouble(int rtype,TrunDrawHistory draw);
	
	/**
	 * 获取额外奖励
	 * @author xiake
	 * @apiNote 已完成
	 * @param rewardInfo
	 * @return
	 */
	TrunDrawExtraRewardResp getTurnDrawExtraReward(int rtype,TrunDrawHistory rewardInfo,String code);

	/**
	 * 
	 * @info 获取水果机进度信息
	 * @author Link
	 * @apiNote 已完成
	 * @date 2019-11-18 17:36
	 * @param rtype
	 * @param pid
	 * @return
	 */
	FruitInfoResp getFruitInfo(int rtype, String pid);

	/**
	 * 
	 * @info 水果机代币兑换
	 * @author Link
	 * @apiNote 已完成
	 * @date 2019-11-19 09:04
	 * @param rtype
	 * @param dtype
	 * @param pid
	 * @return
	 */
	FruitCoinCountHistoryResp getFruitDcoin(int rtype, int dtype, String pid);

	/**
	 * 
	 * @info 水果机代币翻倍
	 * @author Link
	 * @apiNote 已完成
	 * @date 2019-11-19 10:07
	 * @param rtype
	 * @param dtype
	 * @param pid
	 * @return
	 */
	FruitCoinCountHistoryResp getFruitDcoinDouble(int rtype, int dtype, String pid);

	/**
	 * 
	 * @info 游戏复活次数统计
	 * @author Link
	 * @apiNote 已完成
	 * @date 2019-11-19 13:45
	 * @param rtype
	 * @param retry
	 * @return
	 */
	FruitRetryCountHistoryResp getFruitRetry(int rtype, String pid);

	/**
	 * 
	 * @info 获取刮刮卡游戏进度信息
	 * @author Link
	 * @apiNote 已完成
	 * @date 2019-11-20 09:04
	 * @param rtype
	 * @param pid
	 * @return
	 */
	CardInfoResp getCardInfo(int rtype, String pid);

	/**
	 * 
	 * @info 刮刮卡游戏进行刮卡
	 * @author xiake
	 * @apiNote 已完成
	 * @date 2019-11-20 09:04
	 * @param rtype
	 * @param pid
	 * @param code
	 * @return
	 */
	CardDrawHistoryResp getCardDraw(int rtype, String pid, String code,int gtype);

	/**
	 * 
	 * @info 刮刮卡游戏进行翻倍奖励
	 * @author xiake
	 * @apiNote 已完成
	 * @date 2019-11-20 09:04
	 * @param rtype
	 * @param pid
	 * @return
	 */
	CardDrawHistoryResp getCardDrawDouble(int rtype, CardDrawHistory drawHistory);

	/**
	 * 
	 * @info 刮刮卡-翻牌游戏
	 * @author Link
	 * @apiNote 未完成
	 * @date 2019-11-20 09:04
	 * @param rtype
	 * @param pid
	 * @return
	 */
	CardPokerDrawHistoryResp getCardPokerDraw(int rtype, String pid);

	/**
	 * 
	 * @info 刮刮卡-翻牌游戏-翻倍奖励
	 * @author Link
	 * @apiNote 未完成
	 * @date 2019-11-20 09:04
	 * @param rtype
	 * @param pid
	 * @return
	 */
	CardPokerDrawHistoryResp getCardPokerDrawDouble(int rtype, CardPokerDrawHistory poker);

	/**
	 * 
	 * @info 水果机闯关信息记录
	 * @author Link
	 * @date 2019-11-21 09:31
	 * @param rtype
	 * @param pid
	 * @param fpid
	 * @param gtype
	 * @param gstatus
	 * @return
	 */
	FruitDrawHistoryResp getFruitDeaw(int rtype, String pid, String fpid, int gtype, int gstatus,FruitPrinceInfo fruitPrince);
	
	/**
	 * 查询刮刮卡banner
	 * @author xiake
	 * @apiNote 已完成
	 * @date 2019-11-26 10:33:24
	 * @param rtype
	 * @param pid
	 * @param isFirst
	 * @return
	 */
	List<CardDrawBannerResp> getCardBanner(Integer rtype, String pid);

	/**
	 * 开宝箱进度信息
	 * @author xiake
	 * @apiNote 已完成
	 * @date 2019-11-27 06:02:53
	 * @param rtype
	 * @param pid
	 * @return
	 */
	BoxInfoResp getBoxInfo(Integer rtype, String pid);

	/**
	 * 增加开宝箱钥匙
	 * @author xiake
	 * @apiNote 已完成
	 * @date 2019-11-27 06:17:33
	 * @param rtype
	 * @param pid
	 * @param type 钥匙获取类型（0.水果机、1.神奇便利店、2.大转盘、3.刮刮卡）
	 * @return
	 */
	Boolean addBoxKey(Integer rtype, String pid, Integer type);

	/**
	 * 领取宝箱
	 * @author xiake
	 * @apiNote 已完成
	 * @date 2019-11-27 06:21:21
	 * @param rtype
	 * @param pid
	 * @return
	 */
	BoxInfoResp getBoxCardDraw(Integer rtype, String pid);

	/**
	 * 获取刮刮卡轮播数据
	 * @author xiake
	 * @apiNote 已完成
	 * @date 2019-12-10 10:34:55
	 * @param rtype
	 * @return
	 */
	List<ScrollBarInfoResp> getCardScrollBarList(Integer rtype);

	/**
	 * 获取水果机轮播数据
	 * @author xiake
	 * @apiNote 已完成
	 * @date 2019-12-10 10:34:55
	 * @param rtype
	 * @return
	 */
	List<String> getFruitScrollBarList(Integer rtype);

	/**
	 * 获取收集到的最大碎片数
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-10 10:34:55
	 * @param pid
	 * @return
	 */
	CVSPrizeInfoResp getCVSPrizeInfoResp(String pid);

	/**
	 * 领取首轮奖励
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-10 10:34:55
	 * @param rtype
	 * @param list
	 * @return
	 */
	Boolean getCVSStartReward(Integer rtype, List<CVSDrawHistory> list);

	/**
	 * 游戏退出弹窗状态更新
	 * @author lipengchao
	 * @apiNote 已完成
	 * @date 2019-12-10 10:34:55
	 * @param rtype
	 * @param pid
	 * @param pindex
	 * @return
	 */
	Boolean updatePopupStatus(Integer rtype, String pid, int pindex);
}
